package pres.liko.iot.gateway.config;

import org.springframework.stereotype.Component;
import pres.liko.iot.bean.Validates;
import pres.liko.iot.gateway.events.BlackIpChangeEvent;

/**
 * @ClassName: CacheConfig
 * @Auther: liko
 * @Description:
 * @Date: 2022/11/2 09:03
 */
@Component
public class IpsCacheConfig extends BaseCacheConfig<BlackIpChangeEvent> {

    /**
     * 泛型擦除，会导致泛型变成Object,那么所有的事件都会触发
     *
     * @param event
     */
    @Override
    public void onEventUpdate(BlackIpChangeEvent event) {
        super.onEventUpdate(event);
    }

    @Override
    protected String getCacheKey() {
        return Validates.IPS.getStr();
    }

    // private CacheOpenfrignClient cacheOpenfrignClient;
    // private Set<String> ips = new HashSet<>();
    // private Set<String> apis = new HashSet<String>();
    //
    // @Autowired
    // public CacheConfig(CacheOpenfrignClient cacheOpenfrignClient) {
    //     this.cacheOpenfrignClient = cacheOpenfrignClient;
    // }
    //
    // public Set<String> getIps() {
    //     return ips;
    // }
    //
    // public Set<String> getApis() {
    //     return apis;
    // }
    //
    // // @PostConstruct
    // public void init() {
    //     // 加载黑名单
    //     cacheOpenfrignClient.sget(Validates.IPS.getStr())
    //             .subscribe(strings -> {
    //                 // 清除ips
    //                 ips.clear();
    //                 // 将新数据统一添加
    //                 ips.addAll(strings);
    //             });
    //     // 加载api
    //     cacheOpenfrignClient.sget(Validates.APIS.getStr())
    //             .subscribe(strings -> {
    //                 apis.clear();
    //                 apis.addAll(strings);
    //             });
    //
    // }
    //
    // @EventListener
    // public void onStartUp(ContextRefreshedEvent event) {
    //     init();
    // }
    //
    // @EventListener
    // public void onUpdate(BlackIpChangeEvent event) {
    //     init();
    // }
    //
    // @EventListener
    // public void onUpdate(BlackApiChangeEvent event) {
    //     init();
    // }
}
